package peace.util
{
import flash.utils.Dictionary;

import peace.util.Arrays;
/**
 * Ищем пересечения в двух массивах с уникальным индексом 
 */
public class ArraysIntersection
{
	/**
	 * элементы second, которых нет в first 
	 */ 
	public var added:Array = [];
	/**
	 * элементы first, которых нет в second 
	 */ 
	public var deleted:Array = [];
	/**
	 * элементы second, аналоги которых (с идентичными indexProperty) есть в first <br>
	 * updated[элемент first] = элемент second
	 */ 
	public var updated:Dictionary = new Dictionary(true);
	
	/**
	 * 
	 * @param first Array "старый" массив, из которого удаляются не нужные
	 * @param second Array "новый" массив, данные в котором приоритетны
	 * @param indexProperty String уникальнфый индекс объектов массивов
	 * 
	 */ 
	public function ArraysIntersection (first:Array, second:Array, indexProperty:String)
	{
		var o:Object;
		var index1:Object = Arrays.toHash(first, indexProperty);
		var index2:Object = Arrays.toHash(second, indexProperty);
	 
		for each (o in first)
		{
			if (index2[o[indexProperty]])
			{
				updated[o] = index2[o[indexProperty]];
			}
			else
			{
				deleted.push(o);
			}
		}
		for each (o in second)
		{
			if (! index1[o[indexProperty]])
			{
				added.push (o);
			}
		}
	}
}


}